package top.jiangqiang.qianyi.common.base.controller;

import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.validation.annotation.Validated;
import top.jiangqiang.qianyi.common.convert.TypeConverter;
import top.jiangqiang.qianyi.common.crypto.EncryptService;

/**
 * 为何这里要使用@Validated注解？
 * 如果controller中的方法参数是一个或多个简单的参数，需要把@Validated 或@Valid放在类上才能正常校验字段。例如get请求，多个参数字段单独写方法参数列表中。
 * 如果把参数封装到一个类中时，需要在方法参数中使用@Validated 或@Valid注解。例如get请求，将多个参数字段封装到一个类中。
 * 注意：get请求，即使将多个参数字段封装到一个类中，json序列化解密也不会生效。只有参数来源为body中的json字符串时才会生效。
 *
 * @author Jiangqiang
 * @version 1.0
 * @date 2022/11/15 14:17
 */
@Validated
public class BaseController {

    @Resource
    protected HttpServletRequest request;
    @Resource
    protected HttpServletResponse response;

    @Resource
    protected TypeConverter typeConverter;

    @Resource
    protected EncryptService encryptService;
}
